/**
 * Required
 * 将对象类型中的所有属性变为必需的，可选属性变为必需属性。
 */

interface RequiredProps {
  name?: string
  age?: number
}

const objRequired: Required<RequiredProps> = {
  name: '张三',
  age: 18
}

/**
 * 原理
 * -? 表示可选属性
 * +? 表示必需属性
 */
type MadeRequired<T> = {
  [P in keyof T]-?: T[P]
}
